Part Number Hot Search : 
PWT100 AM9513PC 0N60B2 CNY17106 GL032N90 K1603T06 C1204 B950A
Product Description
Full Text Search
 

To Download AN3208 Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
  july 2010 doc id 17411 rev 1 1/19 AN3208 application note microstepping motor drive with stm8a and stm8s microcontrollers introduction stepper motors are electrically powered motors that create rotation from electrical current driven into the motor. they are used in a wide variety of applications such as printers, automated machine tools, disk drives, automotive dashboard instrument clusters, and other applications requiring precise motion control. they are well-suited for positioning applications since they can achieve very good positional accuracy without complicated feedback loops associated with servomechanism (servo) systems. however, their resolution, when driven in the conventional full or half step modes of operation, is limited by the configuration of the motor. many designers today seek methods to increase the resolution of stepper motor drives. dedicated stepper motor controllers/ics are available on the market. these controllers contain the special logic and high-current drive circuits necessary to operate the stepper motors. in some applications, for example in automotive dashboards, stepper motors with a lower current rating (20 ma) are used to power the needles or pointers that display parameters such as vehicle speed or the engine rpm. stepper motors need to be driven in microstepping mode (see section 4: driving stepper motors using stm8a and stm8s microcontrollers ). however, in this case, the use of dedicated stepper motor contro llers may increase the system cost and complexity. as an alternative, the motors can be driven easily using the resources located within a microcontroller (example, pulse-width modulation timers and i/o pins), thus reducing the hardware cost and complexity. cpu load is very low when using internal resources and the microcontroller is not precluded from performing other control activities or driving other external peripherals. for example, the stm8 is able to drive two stepper motors together with an lcd glass containing a high number of segments such as a motorcycle dashboard application. the application described in this document is a software/low cost solution to drive stepper motors in microstepping mode using the stm8 microcontroller. the main focus of this application note is to explain how to drive the microstepping motor with stm8a and stm8s devices. an overview of the various stepper motor types is given in section 2: types of stepper motor . stepper motor basics are explained in section 4: driving stepper motors using stm8a and stm8s microcontrollers . section 5 summarizes stepper motor software. reference documents stm8a reference manual (rm0009) stm8s reference manual (rm0016) stm8a/s datasheets reference firmware stm8a/s firmware library www.st.com
contents AN3208 2/19 doc id 17411 rev 1 contents 1 winding arrangement in two- phase stepper motors . . . . . . . . . . . . . . . 5 2 types of stepper motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1 variable-reluctance (vr) motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 permanent magnet (pm) motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 hybrid synchronous motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3 microstepping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4 driving stepper motors using stm8a and stm8s microcontrollers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5 software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.1 preliminary information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.2 software description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.2.1 main program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.2.2 tim1 interrupt routine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6 revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
AN3208 list of tables doc id 17411 rev 1 3/19 list of tables table 1. pwm duty cycles for an m-s motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 table 2. specific duty cycles of the tim1 registers and i/o values . . . . . . . . . . . . . . . . . . . . . . . . . 15 table 3. document revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
list of figures AN3208 4/19 doc id 17411 rev 1 list of figures figure 1. unipolar winding arrangement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 figure 2. bipolar winding arrangement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 figure 3. variable-reluctance motor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 figure 4. permanent magnet motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 figure 5. hybrid synchronous motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 figure 6. current waveforms with 90 phase difference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 figure 7. functional block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 figure 8. stepper motor schematic layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 figure 9. stepper motor pin configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 figure 10. current waveforms (switec m-s motor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 figure 11. stepper motor configuration pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 figure 12. main program flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 figure 13. tim1 interrupt (microstep output) flow chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 7
AN3208 winding arrangement in two-phase stepper motors doc id 17411 rev 1 5/19 1 winding arrangement in two-phase stepper motors there are two basic winding arrangements for the electromagnetic coils in a two-phase stepper motor: bipolar and unipolar. the unipolar stepper motor has two identical coils which are not connected electrically and each coil has a centre tap. figure 1. unipolar winding arrangement the bipolar stepper motor is the same as the unipolar stepper except the motor coils do not have the center taps. bipolar motor can produce higher torque in comparison to the unipolar motor as the entire coil is energized and not just half-coils. figure 2. bipolar winding arrangement
types of stepper motor AN3208 6/19 doc id 17411 rev 1 2 types of stepper motor there are three main types of stepper motors: 1. variable-reluctance stepper motor 2. permanent magnet stepper motor 3. hybrid synchronous stepper motor 2.1 variable-reluctance (vr) motor this type of motor contains a soft iron multi-toothed rotor and a wound stator. when the stator windings are energized with dc current, it magnetizes the stator poles. rotor teeth are attracted towards the energized stator poles and the rotation occurs. the variable- reluctance motor does not use permanent magnets, so the field strength can be varied. the vr motor generates less torque so it is gen erally used for small positioning loads. figure 3 shows a cross section of a typical vr stepper motor. figure 3. variable-reluctance motor
AN3208 types of stepper motor doc id 17411 rev 1 7/19 2.2 permanent magnet (pm) motor this motor is known as a tin-can or can-stock motor. the permanent magnet stepper motor is a low cost and low resolution type motor with a typical step angle of 7.5 to 15 . pm motors use permanent magnets and the rotor does not have the teeth of the vr motor. the pm motor has improved torque characteristics compared with the vr motor. figure 4. permanent magnet motor 2.3 hybrid synchronous motor the hybrid stepper motor contains features of both the pm and vr motors. hybrid motors are more expensive than pm stepper motors but provide better performance regarding step resolution, torque and speed. typical step angles for the hybrid motor range from 3.6 to 0.9 .the rotor is multi-toothed like the vr motor a nd contains an axially magnetized concentric magnet around its shaft. the teeth on the rotor provide an even better path which helps guide the magnetic flux to preferred locations in the air gap. this further increases the detent, holding, and dynamic torque characteristics of the motor compared with both vr and pm motors. figure 5. hybrid synchronous motor
microstepping AN3208 8/19 doc id 17411 rev 1 3 microstepping physically, stepper motors can be large but, often they are small enough to be driven by current in the ma range. current pulses are applied to the motor which generates discrete rotations of the motor shaft. although it is possible to drive a stepper motor in a manner where it has near continuous rotation, doing so requires more finesse of the input waveform that drives the stepper motor. microstepping is a way of moving the motor shaft more smoothly than in full- or half-step drive modes, allowing the stepper motor to stop and hold a position between the full- or half- step positions. the jerky character of low stepping motor operation is reduced. there are fewer vibrations and less problems with resonance which makes noiseless stepping possible down to 0 hz. with microstepping, smaller step angles and better positioning is possible. the ideal current waveform for driving a stepper motor is a sinewave. two sinewaves, 90 out of phase (or another angle depending on the motor construction), form the ideal drive current. if the stepper coils follow these current waveforms, the motor runs quietly and smoothly, which is the ideal cond ition. in fact, the steps asso ciated with st epper motors will disappear. figure 6. current waveforms with 90 phase difference in microstepping mode, the current magnitude in the motor coil has to be controlled in a proper sequence. the current can be controlled using a h-bridge circuit or pwm technique. section 4: driving stepper motors using stm8a and stm8s microcontrollers describes the software/low-cost solution to drive the stepper motors in microstepping mode using stm8a and stm8s microcontrollers.
AN3208 driving stepper motors using stm8a and stm8s microcontrollers doc id 17411 rev 1 9/19 4 driving stepper motors using stm8a and stm8s microcontrollers this application solution makes use of a pwm current control technique. the stepper motor is driven directly by pwms, i/o pins and a 74hc/hct244 buffer/driver (so the position of the motor can be controlled with precision without any feedback mechanism) of an an stm8a or stm8s microcontroller. two ends of each motor winding are connected to one pwm and one i/o line. tim1 (16-bit advanced control timer) peripheral on the stm8a or stm8s allows two independent pwm signals to be generated. the pwm signals have the same frequency and are controlled by the counter clock period and the capture/compare register values (tim1_ccrxh and tim1_ccrxl). for detailed information about tim1, refer to the stm8a and stm8s device datasheets. figure 7 shows the functional block diagram of a stepper motor, stm8a pwm and i/o signals, and an 74hc244 buffer. figure 7. functional block diagram the stepper motor used in the current solution is the m-s motor x25.689 from switec (see figure 8 and figure 9 ). the main features are: 1/3 resolution per step low current consumption high speed (greater than 600 /s) can be driven directly by a microcontroller the m-s motor has two types of movement: rotor movement pointer shaft movement this motor is therefore a bipolar motor. it has four different wires which operate the motor in both clockwise and anti-clockwise directions.
driving stepper motors using stm8a and stm8s microcontrollers AN3208 10/19 doc id 17411 rev 1 figure 8. stepper motor schematic layout figure 9. stepper motor pin configuration the m-s motor has a gear reduction ratio of 1/180 meaning that 180 of rotor movement (defined as a full-step) is converted to a one degree rotation of the m-s shaft. one full-step is divided into three partial steps which in turn are further divided into four microsteps. so, one complete rotation (360 ) of the rotor is equivalent to 24 microsteps of the m-s shaft. one microstep is equivalent to the 1/12 movement of the m-s shaft. in the m-s motor there is a 60 phase difference between the two motor winding currents. figure 10 shows the current waveforms. figure 10. current waveforms (switec m-s motor)
AN3208 driving stepper motors using stm8a and stm8s microcontrollers doc id 17411 rev 1 11/19 the current in the motor windings is controlled by varying the pwm duty cycle values. the pwm duty cycle for each microstep depends on the phase angle of currents in the two windings. the duty cycles of ta b l e 1 are calculated using the current waveforms of figure 10 . the same table can be generated for other motors using the same method. for more details about dut y cycle calculation see section 5.2: software description . note: ta bl e 1 shows theoretical duty cycle values. contact the stepper motor supplier for exact/customized values. table 1. pwm duty cycles for an m-s motor step no. step angle () phase angle () coil 1 phase angle () coil 2 sine value () coil 1 sine value () coil 2 pwm duty cycle (%) coil 1 pwm duty cycle (%) coil 2 1 0 60 120 0.87 0.87 87 87 2 15 75 135 0.97 0.71 97 71 3 30 90 150 1.00 0.50 100 50 4 45 105 165 0.97 0.26 97 26 5 60 120 180 0.87 0.00 87 0 6 75 135 195 0.71 -0.26 71 26 7 90 150 210 0.50 -0.50 50 50 8 105 165 225 0.26 -0.71 26 71 9 120 180 240 0.00 -0.87 0 87 10 135 195 255 -0.26 -0.97 26 97 11 150 210 270 -0.50 -1.00 50 100 12 165 225 285 -0.71 -0.97 71 97 13 180 240 300 -0.87 -0.87 87 87 14 195 255 315 -0.97 -0.71 97 71 15 210 270 330 -1.00 -0.50 100 50 16 225 285 345 -0.97 -0.26 97 26 17 240 300 360 -0.87 0.00 87 0 18 255 315 15 -0.71 0.26 71 26 19 270 330 30 -0.50 0.50 50 50 20 285 345 45 -0.26 0.71 26 71 21 300 360 60 0.00 0.87 0 87 22 315 15 75 0.26 0.97 26 97 23 330 30 90 0.50 1.00 50 100 24 345 45 105 0.71 0.97 71 97 25 360 60 120 0.87 0.87 87 87
driving stepper motors using stm8a and stm8s microcontrollers AN3208 12/19 doc id 17411 rev 1 a negative sign shows the current flow in the reverse direction. the current flowing through each motor coil is controlled using one pwm output (pwmx) and one i/o port (configured in output push-pull mode) as shown in figure 11 . pwm channels are configured to provide the required waveform in synchronization with the gpios. figure 11. stepper motor configuration pin when the i/o output is 0, the current through a coil flows in one direction and when the i/o output is 1, the current flows in the reverse direction. step-by-step explanation of ta b l e 1 : step 1: coil 1 and coil 2 have the same ma gnitude (0.87, duty cycl e 87 %) and in both coils the current flows in the same di rection, i/o value for both coils is 0. step 2: the magnitude of coil 1 is 0.71 (duty cycle 71 %) and the magnitude of coil 2 is 0.97 (duty cycle 97%). the currents in both coils flow in the same direction, i/o value for both coils is 0. . . step 6: the magnitude of coil 1 is 0.71 (duty cycle 71 %) and the magnitude of coil 2 is -0.26 (duty cycle 26 %). the currents in the two coils flow in the opposite direction. i/o value for coil 1 is 0, i/o value for coil 2 is 1. for more details about duty cycle calculation see section 5.2: software description . ai     4)- 07- )/ 4)- 07- )/
AN3208 software doc id 17411 rev 1 13/19 5 software 5.1 preliminary information the software described in this section has been implemented using a 32-kbyte stm8af6266 device with 32 pins. it performs the complete needle rotation of one stepper motor (in a forward and back forward direction). two pwm channels and two i/o lines are necessary for driving the stepper motor. thus, four stepper motors can be driven by stm8af6266 devices as it is able to provide up to eight pwm signals. note: up to four pwm signals are provided by tim1, two pwm signals are provided by timer2 (leaving one channel free ), and another two pwm signal are provided by timer3. 5.2 software description the software code is based on the stm8a/s standard firmware library available from http://www.st.com. the firmware consists of: a main program an interrupt routine. tim1 interrupt routine, (tim1_upd_ovf_trg_brk_irqhandler()), is used for providing pwms signals with correct duty cycles. 5.2.1 main program the main program initializes the peripherals (gpios, timers, clock cntrl), the variables, and the interrupt routines. af ter initialization, it sta ys in an endless loop (see figure 12 ).
software AN3208 14/19 doc id 17411 rev 1 figure 12. main program flow clk_init() : is the clock initialization routine. for th is application solution, an hsi clock has been used. the cpu frequency is 16 mhz. i/o init() : is the gpio initialization routine. i/o pins dedicated for stepper motor driving are configured in output push-pull mode. tim1_init(): is the initialization routine of tim1. tim1 is configured in ?pwm edge alignment mode? providing four pwm signals at 60 khz. -ain #,+?).)4 )/?).)4 4)-?).)4 %nableinterrupts 7hile ai
AN3208 software doc id 17411 rev 1 15/19 5.2.2 tim1 interrupt routine the microsteps are output from the tim1 interrupt routine (see figure 13: tim1 interrupt (microstep output) flow chart . each microstep output is obtained by changing the pwm duty cycle according to ta bl e 1 . ta b l e 2 provides the tim1ccrx register values required to obtain the pwmx duty cycle and i/o output values for each microstep position. the timccrx register values in ta b l e 2 have been calculated under the stm8 configurations given below and using equation 1 . table 2. specific duty cycles of the tim1 registers and i/o values step no. step angle () pwm duty cycle coil 1 (%) pwm duty cycle coil 2 (%) tim1_ccr1 register values (pwm1) tim1_ccr2 register values (pwm2) i/o values coil 1 i/o values coil 2 1 0 87 87 0x74 0x74 0 0 2 15 97 71 0x81 0x5f 0 0 3 30 100 50 0x86 0x43 0 0 4 45 97 26 0x81 0x22 0 0 5 60 87 0 0x74 0x00 0 0 6 75 71 26 0x5f 0x63 0 1 7 90 50 50 0x43 0x43 0 1 8 105 26 71 0x22 0x26 0 1 9 120 0 87 0x00 0x11 0 1 10 135 26 97 0x63 0x04 1 1 11 150 50 100 0x43 0x00 1 1 12 165 71 97 0x26 0x04 1 1 13 180 87 87 0x11 0x11 1 1 14 195 97 71 0x04 0x26 1 1 15 210 100 50 0x00 0x43 1 1 16 225 97 26 0x04 0x63 1 1 17 240 87 0 0x11 0x86 1 1 18 255 71 26 0x26 0x22 1 0 19 270 50 50 0x43 0x43 1 0 20 285 26 71 0x63 0x5f 1 0 21 300 0 87 0x86 0x74 1 0 22 315 26 97 0x22 0x81 0 0 23 330 50 100 0x43 0x86 0 0 24 345 71 97 0x5f 0x81 0 0 25 360 87 87 0x74 0x74 0 0
software AN3208 16/19 doc id 17411 rev 1 stm8 configurations f_master = 16 mhz (hsidiv[1:0] = 000) tim1_counter_clock = 8 mhz (tim1_pscr = 1) pwmx frequency = 60 khz (tim1_arr = 0x85) equation 1 example to obtain pwm_duty_cycle_coil1 = 87 %: tim1_ccr1 = (0.87) x (0x85 + 1) = 0x74 the maximum step rate/speed possible for the m-s motor is 600 full steps/s or 7200 microsteps/s or 7200 hz. so, the duration between two consecutive microstep output interrupts should be 139 s. the 74x244 buffer/driver current limitation should also be considered to determine the maximum speed with which the stepper motor can be driven. in this application the step rate is set to 830 s. this means that the next microstep is output after 50 pwm interrupts because the pwm frequency is 60 khz (16.6 s). this choice of step rate is guaranteed without incurring any problems over the minimum limit of 300 s. when an overflow interrupt on tim1 occurs (@ 60 khz or 16.6 s), the tim1 interrupt routine is executed. the flow chart of the tim1 interrupt is shown in figure 13 . after resetting the overflow flag, the pwm_count is incremented by 1. when this variable reaches a value of 50, the pwm_count is reinitialized to 0, and according to motor_dir information, the needle of the stepper motor moves forwards or backwards ( motor_dir = 0 or motor_dir = 1 respectively). if the stepper needle moves in forwards, the microstepping number ( microstep_no ) is incremented by 1 (up to 24). in this application the pointer shaft of the stepper motors moves the stepper needle from 0 to 320 . taking into account that after 24 microsteps the pointer shaft has moved by 2, a complete movement of 320 (the rotation_no variable which represents the number of rotations) has to reach 160 (160 rotations multiplied by 2 ). after one complete movement, no_rotation is set to 0, while motor_dir is set to 1. from this point on, the needle moves backwards and, the microstep_no decreased from 23 to 0. tim1_ccrx pwmx_duty_cycle_coil_x () tim1_arr+1 () =
AN3208 software doc id 17411 rev 1 17/19 figure 13. tim1 interrupt (microstep output) flow chart 4imerinterrupt #leartheoverflowflag 07-?count07-?count  07-?count -icrostep?no-icrosteps?no  -icrostep?no ai 07-?count   -otor?dir -icrostep?no 2otation?no2otation?no  2otation?no 2otation?no -otor?dir -icrostep?no 4akenextmicrostep 5pdate4)-?##2x,registertotakenextmicrostep clockwiseoranticlockwise  07-outputgetsupdatedatnextoverflowinterrupt )/outputsalsoupdatedatsameoverflowinterrupt -icrostep?no-icrostep?no  -icrostep?no   -icrostep?no 2otation?no2otation?no  2otation?no 2otation?no -otor?dir -icrostep?no 4akenextmicrostep 5pdate4)-?##2x,registertotakenextmicrostep clockwiseoranticlockwise  07-outputgetsupdatedatnextoverflowinterrupt )/outputsalsoupdatedatsameoverflowinterrupt %ndofinterruptroutine
revision history AN3208 18/19 doc id 17411 rev 1 6 revision history table 3. document revision history date revision changes 06-jul-2010 1 initial release
AN3208 doc id 17411 rev 1 19/19 please read carefully: information in this document is provided solely in connection with st products. stmicroelectronics nv and its subsidiaries (?st ?) reserve the right to make changes, corrections, modifications or improvements, to this document, and the products and services described he rein at any time, without notice. all st products are sold pursuant to st?s terms and conditions of sale. purchasers are solely responsible for the choice, selection and use of the st products and services described herein, and st as sumes no liability whatsoever relating to the choice, selection or use of the st products and services described herein. no license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted under this document. i f any part of this document refers to any third party products or services it shall not be deemed a license grant by st for the use of such third party products or services, or any intellectual property contained therein or considered as a warranty covering the use in any manner whatsoev er of such third party products or services or any intellectual property contained therein. unless otherwise set forth in st?s terms and conditions of sale st disclaims any express or implied warranty with respect to the use and/or sale of st products including without limitation implied warranties of merchantability, fitness for a parti cular purpose (and their equivalents under the laws of any jurisdiction), or infringement of any patent, copyright or other intellectual property right. unless expressly approved in writing by an authorized st representative, st products are not recommended, authorized or warranted for use in milita ry, air craft, space, life saving, or life sustaining applications, nor in products or systems where failure or malfunction may result in personal injury, death, or severe property or environmental damage. st products which are not specified as "automotive grade" may only be used in automotive applications at user?s own risk. resale of st products with provisions different from the statements and/or technical features set forth in this document shall immediately void any warranty granted by st for the st product or service described herein and shall not create or extend in any manner whatsoev er, any liability of st. st and the st logo are trademarks or registered trademarks of st in various countries. information in this document supersedes and replaces all information previously supplied. the st logo is a registered trademark of stmicroelectronics. all other names are the property of their respective owners. ? 2010 stmicroelectronics - all rights reserved stmicroelectronics group of companies australia - belgium - brazil - canada - china - czech republic - finland - france - germany - hong kong - india - israel - ital y - japan - malaysia - malta - morocco - philippines - singapore - spain - sweden - switzerland - united kingdom - united states of america www.st.com


▲Up To Search▲   

 
Price & Availability of AN3208

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X